In transmission systems, a sine or cosine carrier wave is generated and provided to a digital modulator or demodulator to modulate or demodulate a signal. In many instances, it is desirable that the frequency of the carrier wave be programmable. A typical sine or cosine generator includes a sine look-up table.
The sine look-up table (LUT) includes data values representative of a sine carrier waveform for discrete phase values. The discrete values are determined by dividing the phase interval [0, 2.pi.], into smaller intervals. A representative data value of the sine carrier waveform is chosen for each interval. Each representative value is stored in a LUT which may be implemented in a memory such as a RAM or ROM. The correspondence between the discrete phase value, the data values, the sine value, and the address data is shown in Table 1 below.
TABLE 1 ______________________________________ phase value address data sine value ______________________________________ 0 000 0000 0 /4 001 0101 0.707 /2 010 0111 1 3/4 011 0101 0.707 100 0000 0 5/4 101 1011 -0.707 3/2 110 1001 -1 7/4 111 1011 -0.707 ______________________________________
There are eight entries in Table 1 for each of eight phase values. In this case, the interval [0, 2.pi.] has been divided into eight smaller intervals. The entry for each phase value contains a four bit word that corresponds to the sine value of its respective phase value. The data in Table 1 is stored in two's complement format where, for example, a value of 0111 corresponds to a sine value of 1.
FIG. 1 is a flow chart of a prior art method using a sine look-up table to generate a sine carrier. At step 100, a phase value is provided to the sine LUT. The phase value includes P bits that represent one of the phase intervals for which a sine value is to be provided. At step 110, the sine value corresponding to the phase value is retrieved from the LUT. The address of the sine value to be retrieved is specified by the P bits. At step 120, the sine value is provided to a modulator or demodulator as a carrier wave.
The sine look-up table shown in Table 1 contains data for one full cycle of a sine wave and includes data values for phases ranging from 0 to 2.pi.. The size of the sine look-up table may be reduced to a quarter sine table because of the symmetry of the sine function.
The precision of a sine wave generated using the sine LUT is directly related to the number of phase entries in the LUT and the number of quantizations in data. The signal-to-noise ratio (SNR) of the sine wave signal generated by using a sine look-up table is limited by the finite number of phase intervals and the finite quantization of the implementation. The SNR of a sine wave signal generated using a sine look-up table is set forth in equation (1) below. ##EQU1##
In equation (1), p is the number of address bits of the sine LUT and q is the number of quantization bits of each entry in the sine look-up table. Digital modulators or demodulators having a SNR above 80 dB have very large values of p and q. For example, to achieve a SNR of 100 dB, values of p=18 and q=16 can be used. A value of p=18 corresponds to a sine table with 2.sup.18 entries. If implemented using a quarter sine table, this can be reduced to 2.sup.16 or 64K entries. With a q value of 16, this corresponds to a sine table size of 64K.times.16 for a SNR of 100 dB. This is a large look-up table that, if implemented in a semiconductor device, occupies a substantial area of the die. For example, the die area requirement to use a sine look-up table method to generate a sine or cosine carrier wave may be prohibitive for a multi-channel wideband digital down converter (WDDC) having multiple high precision sine look-up tables.
To overcome the shortcomings of conventional methods of generating a sine carrier, a new method and apparatus are provided. An object of the present invention is to provide a method of generating a sine value responsive to an input phase value. A related object is to provide an apparatus for generating a sine value responsive to an input phase value that occupies significantly less space on a die than prior art sine value generators.